python爬虫基于bs4的查找select和find

本文介绍了使用BeautifulSoup(BS4)库进行网页元素查找的关键技巧,包括通过标签名、类名、ID以及属性进行选择。讲解了soup.select()和soup.find_all()方法的使用,如直接子标签查找、属性查找及其组合运用。同时强调了在提取字符串时需要注意返回结果为列表,并举例说明了如何获取标签内的文字内容。
摘要由CSDN通过智能技术生成

最近在学习爬虫的时候,发现之前学的总是会忘记,虽然在网上保存了查询的资料的书签,但是感觉还是不够直观,总还是需要再在网上查询,所以,现在打算在CSND上写一下平时的一些笔记,很多应该会从查到的资料粘贴过来,无其他用途,仅仅自己做笔记而已。

  • bs4的select查找

类名前加点,id名前加 #,在这里我们也可以利用类似的方法来筛选元素,用到的方法是 soup.select(),返回类型是 list
(1)通过标签名查找

print soup.select('title') 
#[<title>The Dormouse's story</title>]

(2)组合查找

组合查找即和写 class 文件时,标签名与类名、id名进行的组合原理是一样的,例如查找 p 标签中,id 等于 link1的内容,二者需要用空格分开

print soup.select('p #link1')
#[<a class="sister" href="http://example.com/elsie" id="link1"><!-- Elsie --></a>]

直接子标签查找

print soup.select("head > title")
#[<title>The Dormouse's story</title>]

(5)属性查找

查找时还可以加入属性元素,属性需要用中括号括起来,注意属性和标签属于同一节点,所以中间不能加空格,否则会无法匹配到。

print soup.select("head > title")
#[<title>The Dormouse's story</title>]
 
print soup.select('a[href="http://example.com/elsie"]')
#[<a class="sister" href="http://example.com/elsie" id="link1"><!-- Elsie --></a>]

同样,属性仍然可以与上述查找方式组合,不在同一节点的空格隔开,同一节点的不加空格

print soup.select('p a[href="http://example.com/elsie"]')
#[<a class="sister" href="http://example.com/elsie" id="link1"><!-- Elsie --></a>]
  • bs4 find_all查找
 findAll(tag,attributes,recursive,text,limit,keywords)

tag:索要筛选的标签

attributes:标签的特征值,是用Python字典封装的一个标签的若干属性和对应的属性值

recursive:布尔型变量,是否递归,默认为True

text:文本参数,用标签的文本内容去匹配

#找到所有的含有the prince的标签

namelist=bsObj.findAll(text="the prince")
print(len(namelist))

limit:范围限制参数,find函数即为limit参数值为1,限制寻找次数

keywords:选择具有指定属性的标签

alltext=bsObj.findAll(id="text")
print(alltext[0].get_text())

注意:keywords参数是个冗余的参数,其可以被attributes等价代替

如下面两段代码是完全一样的

bsObj.findAll(id="text")
 
bsObj.findAll("",{"id":"text"})

另外提一点,不一定要一次性查找完全,可以先把其中的小部分提取出来,再从这小部分里面再提取自己想要的内容

  • 如何用bs4拿到标签里面的文字
    值得注意的是,无论使用select还是find_all,返回的都是一个列表,所以当我们想要拿出其中的字符串的时候,别忘了加上索引,然后可以用.string方法拿到字符串
 dls[0].select('strong')[0].string
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值